最適化アルゴリズムの性能の良し悪しを決めるために,テスト関数 (ベンチマーク関数) が用いられる.テスト関数は,探索の範囲が設定され,最小値 (最適値) が既知であるような関数である.
この資料では,最適化アルゴリズムの評価に用いるテスト関数をプロットする.テスト関数としては,英語版の Wikipedia[1] に載っているものを用いる.
[1]: Test functions for optimization (en:Wikipedia), Accessed on 2021/09/09.
########## Packages ##########
import numpy as np
from lib.lib import Test_function
from lib.plot import Plot_func
##############################
##### instance of the class #####
test = Test_function()
pf = Plot_func()
#################################
#### Plot #####
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
pf.plotly_surface_contour(func=test.himmelblau,
x_range=x, y_range=y, func_name="himmelblau")
###############
#### Plot #####
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
pf.plotly_surface_contour(func=test.three_hump_camel,
x_range=x, y_range=y, func_name="three_hump_camel")
###############
#### Plot #####
x = np.linspace(-10, 10, 100)
y = np.linspace(-10, 10, 100)
pf.plotly_surface_contour(func=test.easom,
x_range=x, y_range=y, func_name="easom")
###############
#### Plot #####
x = np.linspace(-10, 10, 100)
y = np.linspace(-10, 10, 100)
pf.plotly_surface_contour(func=test.cross_in_tray,
x_range=x, y_range=y, func_name="cross_in_tray")
###############
#### Plot #####
x = np.linspace(-10, 10, 100)
y = np.linspace(-10, 10, 100)
pf.plotly_surface_contour(func=test.eggholder,
x_range=x, y_range=y, func_name="eggholder")
###############
#### Plot #####
x = np.linspace(-10, 10, 100)
y = np.linspace(-10, 10, 100)
pf.plotly_surface_contour(func=test.holder_table,
x_range=x, y_range=y, func_name="holder_table")
###############
#### Plot #####
x = np.linspace(-1.5, 4, 100)
y = np.linspace(-3, 4, 100)
pf.plotly_surface_contour(func=test.mccormick,
x_range=x, y_range=y, func_name="mccormick")
###############
#### Plot #####
x = np.linspace(-100, 100, 100)
y = np.linspace(-100, 100, 100)
pf.plotly_surface_contour(func=test.schaffer_n2,
x_range=x, y_range=y, func_name="schaffer_n2")
###############
#### Plot #####
x = np.linspace(-100, 100, 100)
y = np.linspace(-100, 100, 100)
pf.plotly_surface_contour(func=test.schaffer_n4,
x_range=x, y_range=y, func_name="schaffer_n4")
###############
#### Plot #####
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
pf.plotly_surface_contour(func=test.styblinski_tang,
x_range=x, y_range=y, func_name="styblinski_tang")
###############